home *** CD-ROM | disk | FTP | other *** search
Text File | 1991-01-28 | 67.1 KB | 2,283 lines |
- THE DRIVER CREATOR WINDOW
- =========================
-
- The Driver Creator Window is used to create new drivers for the
- Driver List Window.
-
- The drivers provide complete control for receiving and
- transmitting System Exclusive information from virtually every
- instrument. The driver also includes the information necessary to
- audition patches and perform bank editing where appropriate.
-
- WARNING: To use this window effectively it is necessary to be
- able to read and understand the System Exclusive implementation
- charts for your instrument. Also it is necessary to be able to
- work in the hexadecimal numbering system when entering SysX
- information that is sent to the instrument.
-
- If you are just learning about creating drivers, we strongly
- suggest that you obtain System Exclusive documentation for an
- instrument which Sound Quest is already supporting with Drivers.
- Load the existing Sound Quest Driver into the Driver Creator
- Window and compare the documentation with what is entered in this
- window. If you use one of our drivers as an example, and use the
- manufacturers documentation as you work through this chapter, you
- should find it much easier becoming comfortable in obtaining the
- kind of information necessary to create a Driver.
-
-
- PC/XT/AT/PS2
- ------------
-
- In order to save memory it has been necessary to put the Driver
- Creator Window into a separate program called DRVCREAT.EXE. On a
- hard drive system this program will be installed in the MIDI
- QUEST directory. On a floppy only system, this program is found
- on Disk #2.
-
- TO OPEN THE DRIVER CREATOR WINDOW:
-
- 1. Save whatever data you have loaded in MIDI QUEST
- 2. Quit to program
- 3. Insert Disk #2 on a floppy system
- 4. Execute METASHEL /i<RETURN>
- 5. Execute DRVCREAT <RETURN>
- 6. Move mouse to screen top and display menus
- 7. Display the "Windows" menu and select "Driver Window"
- 8. The Driver Creator Window will be displayed
-
- NOTE: If this is the first time running the program you will be
- prompted to enter the identical information as was requested when
- MIDI QUEST was first started (graphics adaptor and MPU interrupt
- number). See the "Getting Started" section of the manual if a
- refresher is needed.
-
- MAC, AMIGA, ATARI ST
- --------------------
-
- TO OPEN THE DRIVER CREATOR WINDOW:
-
- 1. Bring down the "Utilities" menu
- 2. Select "Driver Creator Window" (option 9)
-
-
- Entering Information
- --------------------
-
- When entering information in this window take care to:
-
- 1. ALWAYS press the RETURN/ENTER key after each line or data may
- not be entered properly.
- 2. Most numeric information is entered in decimal EXCEPT
- 3. Enter MIDI strings in hexidecimal format. ( including Dump
- Request )
- 4. Numbers type is indicated by the ending (in this manual):
- H = Hexidecimal (eg. 30H)
- D = Decimal (eg. 4104D)
- Note : H and D are NOT entered in the window!
-
-
- Using the Driver Creator Window
- -------------------------------
-
- In order to create a new driver it is necessary to fill in all of
- the information in active areas (the areas in which a cursor will
- appear when the parameter is clicked on). The window is divided
- into nine sections. Each section will be discussed separately
- with examples of when the section will be used.
-
-
- GENERAL
- -------
-
- It is ALWAYS necessary to enter General information.
-
- Make: the manufacturer and instrument (eg. Roland D-10)
-
- Model: the type of data (eg. Tone)
-
- Defn: where the editing template is stored for the data
- (eg. D-10/Tone.sqt)
-
- 1) this should be left blank unless a template is available to
- edit the data
- 2) this contains the path and a file name to the data file's
- template. It is appended to the path set by the "Options" menu
- selection "Set Template Path" to load the editing template.
- 3) look in the subdirectory structures on your disk where the
- templates are stored to see how template files are organized.
-
- Company the company's SysX ID number (in hexidecimal)
- ID#: (eg. Roland = 41H, Yamaha = 43H, Korg = 40H)
- this is byte 2 of a SysX dump.
-
- FileSize: the amount of memory to be allocated for the data
- (eg. 246D)
- if the data is of variable size it MUST be
- the MAXIMUM size
-
- Header the number of bytes before the first byte of data
- Size: (eg. 6D)
- used during editing
- used to move patches in and out of banks
- (ie copying starts at this offset)
- NOTE: can be left as 0D if neither above option
- is used
-
- Template Value to be placed in Variable 40 for patch edit
- V40: set to 0D unless needed for template control
-
- Storage the format in which the data transmitted
- Format: enter (0 - 6) (0 default and most common)
-
- 0) 7-bit format
-
- 1) Nibble format where 8 bits are sent as
- two 4 bit nibbles
- (ie HHHHLLLL -> 0000LLLL 0000HHHH)
- Low nibble sent first
-
- 2) Korg M1 packed format
- used by M1, M3R, T1-2-3
- takes 7 8-bit bytes
- strips the top bit of each to make
- a new byte
- sends 8 bytes (new byte first)
-
- 3) TX802 format
- hopefully never to be used again
-
- 4) DX7II/TX802 fractional scaling
- nibblized and OR'd with 30H.
-
- 5) 14-bit word divided into two bytes
-
- 6) Reverse nibble format
- two 4 bit nibbles - high nibble first
- (ie HHHHLLLL -> 0000HHHH 0000LLLL)
-
- 7) Alesis HR-16 Format
- 7 -> 8 byte storage format
-
- 8) Ensoniq VFX Performance format
- Inverted Reverse nibble byte format
-
- F7 End: Toggle 'Yes' or 'No' whether data ends with F7H
- almost always 'Yes'
-
- Fixed Toggle 'Yes' or 'No' whether data length is
- Length: constant. This is almost always 'Yes'
- except for Sequence dumps which vary in
- size.
-
- I/O Mode: Whether a Macro is used for Receive/Transmit
- Sgl - Single Mode
- uses Dump Request (if any) and
- expects the complete data
- transmission in response
- Ext - Receive & Transmit with Macro
-
- MIDI If the MIDI Channel Ofs is greater than 0 then
- Comm Ch the Communication Channel set in the Driver
- Ofs: Window is placed in the byte
- selected. The byte offset starts at 0.
- (eg. Yamaha uses byte 2 for the communication
- channel)
-
- MIDI Most System Exclusive information is channel
- Comm Ch sensitive. This could either be to the MIDI
- Ofs: channel or some other type of channel (for
- example Roland's UNIT #). The channel is called
- the Communication Channel (Comm Ch) in MIDI
- QUEST. This value provides a byte offset for
- where the channel information is to be stored.
- If the byte offset is > 0 then the communication
- channel information entered in the Driver List
- Window or in an Update requester is automatically
- formatted into ALL system exclusive transmissions
- made to the instrument.
- (eg. Yamaha uses byte 2 for the communication
- channel)
-
-
- BANK EDIT
- ---------
-
- The Bank Edit parameters control the Bank Editing Window and
- Library Display. There are two additional Bank Editing parameters
- which are found in the Edit Extras Requester discussed later in
- this chapter. It is very important that these two parameters are
- also entered properly or there will likely be problems.
-
- Bank Edit Memory Map
-
- The following is a memory map of a bank which will help in
- entering the correct parameters to perform bank editing.
-
-
- |---------------------------------|
- | |
- | Header Size |
- |---------------------------------|
- | Voice Ofs |
- | |
- | Voice Name Ofs |
- | Voice Bytes | Voice Size (Voice 1)
- | Voice Name Size |
- | |
- | (voice tail) |
- |---------------------------------|
- | Voice Ofs |
- | |
- | |
- | Voice Bytes | Voice Size (Voice 2)
- | |
- | |
- | (voice tail) |
- |---------------------------------|
- | .. |
- | (data tail) |
- |---------------------------------|
-
-
- Bank/Library Editing Parameters
- -------------------------------
-
- The bank parameters must be set correctly for patches as well if
- a Patch Library is to be created using the driver. For a Library
- to be created, the number of Voices must be set to '1' and Bank
- set to 'No'.
-
-
- Bank: - Toggle 'Yes' or 'No'
- - if this is a bank, make it 'Yes'
-
- #Voices: The number of voices or patches in the bank
- (ie 64D)
- - set to 1 for a Library
-
- VoiceSize: - TOTAL number of bytes used by each voice
- - For copying, swapping and pasting Patches
- - This should include all bytes relating to
- a particular patch regardless of whether
- they actually contribute to sound creation
-
- Voice Name Offset: - The byte position from the start of
- the sound parameters where the name is to be
- found.
- - the count MUST start from 0
- - (eg. 0D for Tone, 145D for DX7 Voice)
-
- Voice Name Size: - The number of characters in the Voice
- - (eg. 10D)
- NOTE: IF NAMES IN VOICES IS SET 'YES' THEN
- SET THIS PARAMETER TO '10' (NO LARGER!!!!)
-
- Voice Name Format: - A special entry to determine the bank
- numbering scheme and accommodate non-ASCII
- standard ways of storing the name
- - current range is 0 -> 9
-
- - 0) ASCII characters with 1 - > #Voices
- bank numbering
- - 1) ASCII characters with 0 -> #Voices - 1
- bank numbering
- - 2) ASCII characters with Roland 1-1 -> 8-8
- bank numbering
- - 3) D-50 character conversion and display
- - 4) Emu Proteus format
- - 5) Matrix 6/1000 character conversion and
- display
- - 6) MKS-50 voice format
- - 7) nibblized in a regular voice format
- - 8) MX-8 voice format
- - 9) SQ-1 voice format
-
- Names in Voices: - normally set to 'No'
- - if the bank data does not have space for
- Names within the data itself, it is necessary
- to allocate memory for names by setting this
- parameter to 'Yes'. Names can be given to
- each patch by using the bank menu "Fill Name"
- option.
-
- NOTE: THIS IS A MEMORY ALLOCATION PARAMETER! IF THE DATA HAS ITS
- OWN SPACE FOR NAMES, SET THIS TO 'NO'. IF THE BANK DOES not HAVE
- SPACE FOR NAMES IN ITS OWN DATA, SET THIS TO 'YES'.
-
- Adjust: - used for displaying banks which do not have
- symmetrical data. Every "Adjust" bytes the
- bank data pointer will advance by "Advance"
- bytes.
-
- Advance: - used for displaying banks which do not have
- symmetrical data. Every "Adjust" bytes the
- bank data pointer will advance by "Advance"
- bytes.
-
-
-
- ROLAND
- ------
-
- MIDI QUEST contains special Roland System Exclusive communication
- code to make working with these instruments easier. If the I/OMode (in General) is set to 'Sgl' and the Company ID# = 41H, then
- the Roland parameters will become active. They MUST contain the
- starting address of the data to be loaded in Roland's format.
- This information is copied directly into bytes 5 -> 7 of the
- request for data.
-
- When Roland communication takes place in this mode all header and
- tail bytes are stripped from the data before it is stored.
-
-
- CHECK SUM
- ---------
-
- If there is a check sum routine for the data, it will be run each
- time before the data is sent out via MIDI (note: when using
- macros this must be a component of the macro). There are four
- parameters which control the Check Sum.
-
- Type: there are five predefined check sum types
-
- 0) Yamaha format 2's complement check sum
- (sum bytes and take 2's complement)
- 1) Nibble format where checksum is divided and
- COfs stored in two bytes COfs & COfs + 1
- (combine nibbles, sum bytes, nibblize to
- store)
- 2) Nibble format
- (combine nibbles, sum bytes, strip high bit,
- store)
- 3) K1 format
- (sum bytes, add A5H, strip high bit, store)
- 4) Regular Checksum
- (sum bytes)
- 5) 1's Complement check sum
- (sum bytes and take 1's complement)
- 6) VZ1 format - combine nibbles and sum
- 7) K5 checksum format
-
- NOTE: If the equipment uses a checksum other than one of these,
- communication will have to use a macro so that the checksum can
- be customized.
-
- #Bytes - the number of bytes to perform the checksum on
- - set to 0D if there is no checksum
- - if using a Nibble format checksum, the number of
- bytes operated on will be double that of the
- number entered as a result of the nibble format
-
- Start - the number of bytes from the start of the data
- where the checksum calculation will start
-
- COfs - the number of bytes from the start of the data
- where the calculated checksum will be stored
-
-
- DUMP REQUEST
- ------------
-
- In 'Sgl' mode (in General) a Dump Request will be sent before
- data is requested.
-
- # of Bytes - the number of bytes to send a Dump Request
- - set to 0 if no request
- - the request can be up to 20 bytes long
- - (ie 5 for Yamaha DX Voice)
-
- MIDI Req Ch Ofs- the byte offset to store the Communication
- Channel making a Dump Request
- - set to 0 if the data is not channelized
- - remember the bytes are ordered 0->#bytes-1
- - (eg. 2 for Yamaha DX Voice)
-
- Dump Request - below the Ch Ofs there is space to enter
- the data's dump request
- - it MUST be entered in HEXADECIMAL
- - F0 43 20 0 F7 for a Yamaha DX Voice
- - note: each number must be entered
- separately with a <RETURN> afterwards
-
-
- RECEIVE/TRANSMIT
- ----------------
-
- When I/O mode is 'Ext' a macro must be entered in Receive and
- Transmit to control the collection and transmission of the
- desired System Exclusive data. See the full explanation of how to
- write macros below.
-
- The macro language is covered after the Creator menu.
-
-
- AUDITION
- --------
-
- When the Data is a Bank, Audition is enabled and it is possible
- to enter a macro which will transmit an individual patch selected
- from the bank to the instrument so it can be heard.
-
- The selected data is passed to the Audition macro as a chunk of
- memory Voice Size large. In the macro it will be necessary to
- allocate a new block of memory, copy the data into the new block,
- and then add the proper header and tail information (including
- checksum if required) for the transmission of a patch. The newly
- created patch can then be sent to the instrument.
-
- The macro language is covered after the Creator menu.
-
-
- THE CREATOR MENU
- ----------------
-
- When the Driver Creator Window is active, the "Creator" menu is
- available as the third menu strip. It contains five entries (four
- on the PC) to aid in the development of drivers.
-
- The entries are:
-
- 1. Compile (C)
- 2. To Driver List - Test (T)
- 3. Load Driver from Data (L)
- 4. Edit Extra Parameters (E)
- 5. Update Window (U)
-
-
- Menu Item 1 - Compile (M)
-
- 1. Enter a macro or a portion thereof.
- 2. Select "Compile".
- 3. Find and correct the error if an error message results.
-
- The "Compile" item runs a test compile on all active macros. It
- is recommended that a test is run after each macro is completed
- to ensure that there are not any problems.
-
- If there is an error, a message window is displayed indicating
- the line that the error occurred on, along with the character
- position at which it occurred.
-
-
- Menu Item 2 - To Driver List - Test (T)
-
- 1. Complete the creation of the Driver.
- 2. Select "To Driver List" from the menu.
- 3. Go to the Driver List Window.
- 4. The new driver will be at the bottom of the list.
- 5. Test it with whatever option is most appropriate.
- 6. If there are problems return to the Driver Creator
- to correct them.
-
- The "To Driver List - Test" item adds the new driver to the
- bottom of the current driver list so that it can be tested. If it
- does not work properly, it can always be deleted from the list
- and you can return to the Driver Creator Window to make whatever
- corrections are necessary.
-
- PC NOTE: Because of memory restrictions, it was necessary to
- place the Driver Creator and File Conversion Utilities into a
- separate product so this option is not available. Once a new
- Driver is complete, it should be saved to disk, load MIDI QUEST
- into your computer, load the new driver and test it.
-
-
- Menu Item 3 - Load Driver from Data (L)
-
- 1. Select "Load Driver From Data" from the menu.
- 2. Select the DATA FILE which has the desired driver.
- 3. The data file's driver will be loaded into the Driver
- Creator Window for editing.
-
- We at Sound Quest were determined to build all of the tools we
- would need to create MIDI QUEST into MIDI QUEST. One of the
- things we required was a way to access old Sound Quest drivers
- which are built into our data files. This option provided that
- capability. Its sole use in the normal course of events would be
- a situation where you obtained a data file from someone using a
- driver that you did not have and you wanted the driver for your
- own use. This option will extract the driver.
-
-
- Menu Item 4 - Edit Extra Parameters (E)
-
- 1. Select "Edit Extra Parameters" from the menu.
- 2. Edit any parameters which require it.
- 3. Select "Exit" to return to normal editing.
-
-
- EDIT EXTRA PARAMETER
- --------------------
-
- The "Edit Extra Parameters" item opens a Requester containing 10
- additional parameters which define a driver which would not fit
- in the basic window. THESE PARAMETERS SHOULD ALWAYS BE CHECKED TO
- ENSURE THAT THEY ARE CORRECT.
-
- The parameters are:
-
-
- Patch
-
- The five parameters relate directly to control over the Pch#
- parameter in the Driver List Window and Update Requester. This
- parameter is typically used when it is possible to select which
- patch is to be loaded or stored as a function of the data and/or
- Dump Request. If you want the Pch# selected in the Driver List
- Window or Update Requester formatted into the data, turn Patchize
- on (set 'Yes')
-
- Patchize - Toggle 'Yes' or 'No'
- Patch Min - the lowest patch number which can be requested
- Patch Max - the highest patch number which can be requested
- Patch Ofs - the offset where the patch# is stored in the
- Data
- Dump Ofs - the offset in Dump Request where patch# is
- stored
-
-
- Bank Edit
-
- The Bank Edit parameters control bank editing and display and
- work in conjunction with the parameters displayed in the Bank
- Edit portion of the Driver Creator Window. These two parameters
- are very important for ALL of the bank editing functions which
- deal directly with the data, such as all the randomizing
- functions.
-
- Voice Ofs - the number of bytes between the start of patch
- and where the actual editable parameters start
-
- Voice Bytes - the number of accessible bytes
-
- The "Voice Ofs" parameter is necessary to make up the difference
- between where the Header Size parameter points within the data
- and where the first byte is that actually makes up the sound.
- These two locations may not actually be the same since there are
- sometimes informational parameters placed before the data.
-
- The "Voice Bytes" parameter is required for all patch
- randomization features. Because of the varying data storage
- formats, the number of accessible bytes in a patch may not be the
- same as the number of bytes used by the patch. For example, in a
- nibblized format there may be 75 accessible bytes which actually
- uses 150 bytes because each byte is divided into two nibblized
- bytes. The "Voice Bytes" must contain the number of ACCESSIBLE
- bytes.
-
- Both of these parameters must be correctly entered to randomize
- patches, move single patches into parameter edit windows, move
- patches from parameter edit windows into the bank, and to
- audition patches.
-
-
- Comm Channels
-
- These parameters give the maximum ranges that the Communication
- Channel can assume. The parameters are used in the Driver List
- Window and the Update Requester. In many MIDI instruments the
- Communication Channel will be the same as the MIDI channel with a
- range of 1 - 16. However, there are exceptions such as Roland LA
- instruments (except D-50) which use a UNIT # that ranges from 17
- - 32 and Yamaha DX7II/TX802 which use a Device # that is
- independent of the MIDI Channel.
-
- Channel Min - the lowest possible communication channel
- Channel Max - the highest possible communication channel
-
-
- Roland Handshake
-
- When using Roland Communication in 'Sgl' communication mode, it
- is necessary to distinguish whether data communication requiredhandshaking. This parameter controls whether it is used or not.
-
- Handshake - toggle 'Yes' or 'No'
-
-
- Prepared Format
-
- If 'Format' is set to 'Yes' then MIDI QUEST allows an empty edit
- file to be added using the "Add Empty Data File" in the Driver
- List Menu. In order for MIDI QUEST to work properly however, the
- driver must use macros in the extended mode and perform all SysX
- header and tail formatting in the Transmit Macro. For example, a
- DX7 Voice driver must add the header 'FA 5 0 {F0 43 0 1 19}'
- macro and tail macro 'K 0 0 6 155 161 MX = 247 FX 162'. Note:
- macros will be discussed later.
-
-
-
- IDs
-
- There are 2 ID parameter, 'Driver ID' and 'Link ID'. These
- numbers are used to find companion drivers in the driver list and
- give MIDI QUEST these important features: the ability to edit a
- patch from within a bank, to disassemble a bank into a patch
- library, and the ability to create a bank from a library of
- patches. These functions require a patch driver to be able to
- find a bank driver and vice versa. The Driver ID should be unique
- for each Driver. Sound Quest reserves all driver numbers below
- 16,000. The Link ID should contain the Driver number of the
- relative driver. For example a patch driver has the number 1200
- and the Bank driver has a number 1201 then the settings would be
- as follows:
-
- Driver ID Link ID
- --------- -------
- Patch Driver 1200 1201
- Bank Driver 1201 1200
-
-
-
- Menu Item 5 - Update Window (U)
-
- 1. Select "Update Window" from the menu.
- 2. All parameters in the window will be refreshed.
-
- All parameters are actually entered into the new driver when the
- <RETURN> key is pressed. If the key is not pressed, the data will
- NOT be entered. This option updates the window using the current
- value of the drivers parameters to ensure they are correct.
-
-
- THE SOUND QUEST MACRO LANGUAGE
- ------------------------------
-
- This section will describe each of the available commands for
- using macros along with an example and explanation of where the
- command is likely to be used.
-
- The MIDI QUEST program is designed so that there are no temporary
- data buffers used to consume memory. Any data received via MIDI
- is loaded DIRECTLY into the computer memory that will be used for
- editing. There is no intermediate memory used. Because of this
- design, you should be aware of getting from a command that
- requests SysX from an instrument (T n or TR n) to the command
- which actually receives the data (R n) quickly.
-
- For both transmission and reception of MIDI data, you must work
- in terms of COMPLETE, properly formatted MIDI messages. You can
- not send a byte at a time.
-
- The MIDI QUEST macro language has 4 variables: W, X, Y, and Z.
- These can be assigned values or used as variables in place of any
- parameter which would take a numeric value.
-
- When a macro is called it is automatically given the memory
- required for storing data (as defined by FileSize in the Driver).
-
- In the case of the Receive Macro:
-
- 1. A buffer containing 'FileSize' bytes is pre-allocated.
- 2. R n (receive n bytes) commands automatically load data
- into this buffer
- 3. After reception the data pointer is advanced so that
- additional data can be loaded
-
- In the case of the Transmit Macro:
-
- 1. A pointer to the data is provided
- 2. T n (transmit n bytes) sends the desired data
- 3. commands automatically advance the pointer after n bytes
- have been transmitted
-
-
- NOTES
- -----
-
- All character entries can be made in either upper or lower case.
- When a driver is loaded from disk, any macros are automatically
- uncompiled using upper case letters. (eg. TR 15 R 62).
-
-
- DEFAULTS
- --------
-
- These are the values of various parameters upon macro entry
-
- Data Pointer - points to the buffer used to load or send data
- Data Size - the number of bytes in the buffer
- Wait Mode - Wait for F0H to start receiving SysX information
- Variable W = 0
- Variable X = New value of an edited parameter(Templates only)
- Variable Y = Communication Channel (Comm Ch)
- Variable Z = selected patch (Pch #)
-
-
- MACRO COMMANDS
- --------------
-
- Transmit Bytes
- --------------
-
- T n
-
- where
-
- n = number of bytes to send
- n = 0 will send all bytes Pointed at by the Data Pointer (for
- files of unknown length)
-
- eg. T 163 (to send a Yamaha DX Voice)
-
- T is used to immediately transmit n bytes via MIDI OUT starting
- at the Data Pointer.
-
- WARNINGS:
-
- Should only be used in the Receive macro after the (S)et command
- has been used to set up data to send.
-
- NOTES:
-
- All 3 MIDI transmit functions will automatically format in the
- data's selected MIDI channel if it is a standard MIDI message or
- will format in the Communication channel if the data is a SysX
- message and the Communication channel offset is > 0.
-
-
- Transmit Bytes on next Receive
- ------------------------------
-
- TR n
-
- where
-
- n = number of bytes to send
- n = 0 will send all bytes in the current buffer (for files of
- unknown length)
-
- eg. TR 5
-
- TR is used to setup n bytes, starting at the Data Pointer, so
- that they are transmitted immediately before the macro waits toreceive SysX bytes.
-
- WARNINGS:
-
- Should only be used in the Receive macro after the (S)et command
- has been used to set up data to send.
-
-
- Transmit Bytes from Buffer
- --------------------------
-
- B n
-
- where
-
- n = number of bytes to send
- n = 0 will send all bytes in the current buffer (for files of
- unknown length)
-
- eg. B 5
-
- B is used to send data from the data buffer regardless of what
- the Data Pointer is set to.
-
- WARNINGS:
-
- Should only be used in the Transmit macro.
-
-
- Receive Bytes
- -------------
-
- R n
- RA x n
-
- where
-
- n = number of bytes to receive
- n = 0 will load up to the number of bytes left in the Receive
- Buffer
- x = number of bytes to skip before receiving
-
- These commands are used to receive data bytes from MIDI. Both
- functions receive up to n bytes. The RA function will ignore x
- bytes before it starts receiving data. This allows some
- instrument responses to be ignored before the actual data is
- received (necessary for KORG AI instruments).
-
- Each receive bytes command expects only one string of SysX bytes
- to be received (ending in F7H). The receiving process is ALWAYS
- stopped on the receipt of an EOX end of transmission. To load two
- or more blocks of SysX data it will always be necessary to make
- that number of receive requests.
-
- eg. R 200 receive and store up to 200 bytes
- eg. RA 6 174 receive and ignore 6 bytes then receive and store
- 174 bytes
-
- WARNINGS:
-
- This command should ONLY be used when writing a Receive macro.
-
-
- Communication Channel Offset
- ----------------------------
-
- C n
-
- where
-
- n = the byte offset in which to place the communication channel
- n = 0 do not use the communication channel
-
- C allows the macro to control the current offset of the
- Communication channel. The default, on entry to the macro, is to
- use the value of the "MIDI Channel Ofs" as set in the Driver
- Creator Window.
-
-
- Loop
- ----
-
- L n [ (macro statements) ]
-
- where
-
- n = the number of times to loop the macro
- [ ] = macro statements to be looped
-
- \BL\b allows a portion of the macros to be looped any number of
- times. This is useful for repetitively receiving or transmitting
- SysX information or to set multiple checksum values.
-
- WARNINGS:
-
- There can only be one loop at a time
-
-
- Wait for SysX Start - Toggle
- ----------------------------
-
- N
-
- The N option toggles whether the software's MIDI SysX receive
- section is supposed to wait for a SysX Start Command (F0H) or
- not. By default it does, and the situations would be very rare
- when this command will be used. (An exception is the reception of
- Casio dumps where data must be received starting with a byte thatis NOT F0H).
-
-
- Delay
- -----
-
- D n
-
- where
-
- n = number of microseconds
-
- The Delay command stops the execution of the macro for n
- microseconds. It can be used in any situation where the execution
- needs to be slowed.
-
- eg. An instrument can not handle the transmission of two large
- SysX messages one immediately after the other. Try transmitting
- one message, delay 5,000 microseconds (D 10000) and transmit the
- second message. The instrument is much more likely to receive the
- second transmission more accurately.
-
-
- End of Macro
- ------------
-
- E or ]
-
- There are situations where it may be necessary to exit out of the
- macro before the end of the macro. This can be accomplished by
- entering an E or ].
-
- (This option is more commonly used in Template macros.)
-
-
- Set Data Pointer to MIDI String
- -------------------------------
-
- S n {an n byte complete MIDI message}
-
- where
-
- n = number of bytes in the MIDI message
-
- This command sets the Data Pointer to the MIDI message, and all
- subsequent operations which write into the data will write into
- this string until it has been transmitted using the T or TR
- commands.
-
- This command can be used to create any MIDI message you want in
- order to accomplish whatever your purpose is.
-
- eg. S 5 {F0 43 20 0 F7} - Yamaha DX7 Voice Dump Request
- eg. S 3 {90 60 40} - turn on note 96D with velocity of 64D
- eg. S 2 {C0 02} - set up patch change message for patch2
-
- WARNINGS:
-
- 1. The MIDI string MUST be entered in HEXIDECIMAL format.
-
- 2. You must ensure that a complete MIDI msg is being provided! In
- other words, a SysX message must start with F0H and end with F7H
- and a regular MIDI Message (eg. Note ON) must start with a status
- byte.
-
- 3. Running Status is NOT supported.
-
- 4. The Data Pointer is literally set to a position in the
- compiled macro. You must ensure that any subsequent operations,
- which write into the MIDI string, stay within the confines of the
- message. VERY NASTY PROBLEMS CAN RESULT OTHERWISE!
-
-
- Assign Buffer
- -------------
-
- A
-
- Force the Data Pointer to point back to the Buffer data instead
- of MIDI data built into the macro. This is useful in a situation
- where the (S)et command has been used but all of the data has not
- been set and it is necessary to access the Data Buffer again for
- either reception or transmission of data.
-
-
- CheckSum
- --------
-
- K m n start len ofs
-
- where
-
- m = Data Format (should be the same as Storage Format)
- n = Check Sum type (should be the same as in Check Sum)
- start = offset from current Data Pointer position to start CSum
- len = the number of bytes in the checksum calculation
- ofs = offset from current Data Pointer position to store CSum
-
- This is the macro equivalent of the 'Check Sum' portion of the
- Driver Creator window. Any data which contain a check sum should
- have this calculation run before transmission.
-
- eg. K 0 0 6 155 161 (format command for DX7 voice)
-
-
- Format All Bytes
- ----------------
-
- FA m n {m MIDI bytes to copy}
-
- where
-
- m = number of bytes to format into current MIDI string
- m = offset from current Data Pointer position to place the bytes
- { m bytes } = the bytes which are to be copied into the string
-
- This command will format a string of bytes into the current MIDI
- String. This option is particularly useful for the Audition macro
- where a completely new message is being created.
-
- eg. FA 8 0 {F0 41 0 16 12 4 0 0}
-
- This example would format the correct header code necessary to
- transmit a new tone to a Roland D-10.
-
-
- Write a Byte (Unformatted)
- --------------------------
-
- F(W..Z) n
-
- where
-
- (W..Z) = any 1 of the four variables: W, X, Y, Z
- n = offset from the current Data Pointer to store the data
-
- This command takes the contents of the variable (W..Z) and stores
- it in the nth byte from the current Data Pointer
-
- eg. FW 4
-
- This takes the contents of W and stores it in the fourth byte
- from the Data Pointer.
-
- NOTE: This command does NOT use the Storage Format (See FR).
-
-
- Read a Byte (Unformatted)
- -------------------------
-
- FG (W..Z) n
-
- where
-
- (W..Z) = any 1 of the four variables: W, X, Y, Z
- n = offset from the current Data Pointer to store the data
-
- This command takes the contents of the variable (W..Z) and stores
- it in the nth byte from the current Data Pointer
-
- eg. FG W 4
-
- This takes the contents of the fourth byte from the Data Pointer
- and stores it in the variable W.
-
- NOTE: This command does NOT use the Storage Format (See FS).
-
-
- Math Operations
- ---------------
-
- M(W..Z) op (W..Z,n)
-
- where
-
- (W..Z) = any 1 of the four variables: W, X, Y, Z -> destination
-
- op is one of the following math operations:
- + (add) - (subtract)
- * (multiply) / (divide)
- | (bitwise OR) & (bitwise AND)
- > (shift right) < (shift left)
- = (equal) % (mod)
-
- (W..Z) = any 1 of the four variables: W, X, Y, Z -> source
- n = any numeric constant
-
- The macro language has an extensive selection of macro operations
- which can be performed on variables. For those of you familiar
- with the 'C' language, the operations are identical. We will use
- a number of examples to illustrate how the math operations work.
-
- A table will be kept showing the contents of each variable after
- the completion of each operation.
-
- Operation Explanation Var W X Y Z
- -------------------------------------------------------------
- START 1 6 3 0
- MW = 3 : W takes on the value 3 3 6 3 0
- MX = Z : X takes on the value of Z 3 0 3 0
- MX + 1 : add 1 to X 3 1 3 0
- MW + Y : add contents of Y to W 6 1 3 0
- MW / Y : divide W by Y 2 1 3 0
- MY < 4 : bit shift Y left 4 2 1 48 0
- MY | 21 : 00010101 | 00110000 -> 00110101 2 1 53 0
- MX < 7 : bit shift X left 7 2 128 53 0
- MX > 2 : bit shift X right 2 2 32 53 0
- MY & 21 : 00110101 & 01010101 -> 00010100 2 32 20 0
- MX % Y : X mod by contents of Y 2 8 20 0
-
- WARNING:
-
- You should NOT attempt to divide a variable by 0.
-
-
- Delay MIDI transmission
- -----------------------
-
- DM n
-
- where
-
- n = every nth byte to delay on
-
- This command slows the MIDI transmission rate to accommodate
- synthesizers which can not receive transmissions at full MIDI
- rate. This command will slow SysX transmission so that for every
- nth byte there is a 10 millisecond delay before transmission
- recommences.
-
- eg DM 20
-
- Delay 10 milliseconds every 20th byte transmitted.
-
- WARNING:
-
- If this type of transmission is required for a particular
- instrument to function properly, the sequencer should NOT be run
- while communication of this type is taking place!
-
-
- Receive Data Unstored
- ---------------------
-
- RB n
-
- where
-
- n = the number of bytes to receive (between 1 and 100)
-
- This command is used when data must be received from an
- instrument and it is not to be kept. The data is read and stored
- in a temporary buffer and immediately dumped.
-
- eg. RB 52
-
- Read 52 bytes into the temporary buffer and dump.
-
-
- Global Commands
- ---------------
-
- GA n - allocate n bytes of memory
- GN - set Data Pointer to the new memory
- GO - set Data Pointer to the old memory
- GR - reset Data Pointer to start of new memory
- GC m p q - copy block of bytes from old mem to new
- GF n - free the allocated memory
-
- where
-
- n = number of bytes
- m = number of bytes offset from the start of the old memory
- p = number of bytes offset from the Data Pointer
- q = number of bytes to copy from the old memory into the new
- memory
-
- All of the operations in this section are usually used in the
- Audition macro and in the File Conversion macros which can be
- used to convert other manufacturers files to Sound Quest format
- files.
-
- GA is used to allocate the memory necessary to create a complete
- patch from a bank, usually n will equal the complete byte size of
- the patch.
-
- GN is used after the memory has been allocated and sets this
- memory for use by the other Data Pointer related operations.
-
- GO is used to set the Data Pointer back to the original data so
- that it can be operated on if necessary.
-
- GR is used to reset the Data Pointer to the beginning of the
- allocated memory so that it can be reused if desired. This
- function will probably be used if there is a loop in the Audition
- macro.
-
- GC is usually used to copy the sound data from the bank into the
- newly allocated data which will be used for the audition.
-
- GF is used to free the memory - this should be called before
- exiting the macro.
-
- Here is an example which incorporates most of the functions in
- this section and is drawn directly from the D-10 Tone Audition
- macro. It is the complete code to prepare and transmit the data.
-
- GA 256 - allocate memory
- GN - make memory active
- FA 8 0 {F0 41 0 16 12 3 0 0 } - format in header
- GC 0 8 246 - copy in body
- K 0 0 5 249 254 - generate checksum
- MX = 247 - set F7H end
- FX 255 - copy F7H into end
- T 256 - transmit complete tone
- GF 256 - free the data
-
- WARNING:
-
- DANGER! When using GC ensure that the copy does not exceed the
- available buffer space.
-
-
- Read Byte from Data (Formatted)
- -------------------------------
-
- FR (W..Z) ofs
-
- where
-
- (W..Z) = one of four variables: W, X, Y, Z
- ofs = offset from the data pointer to get the data
-
- This command reads a byte of data out of the buffer currently
- pointed to by the Data Pointer. The command uses the Storage
- Format parameter when reading the data so that if the data is in
- a non-standard format such as nibblized or in M1 format, this is
- accounted for and the complete byte is read and provided. This
- command is more commonly used in Template macros but could be
- used for other purposes.
-
- eg. FR W 4
-
- This reads the fourth byte offset from the Data Pointer into the
- variable W.
-
- The complement of this command is FS W 4.
-
- WARNING:
-
- Ensure that the byte read is within the current buffer.
-
-
- Store Byte in Data (Formatted)
- ------------------------------
-
- FS (W..Z) ofs
-
- where
-
- (W..Z) = one of four variables: W, X, Y, Z
- ofs = offset from the data pointer to store the data
-
- This command stores data in a variable into a location offset
- from the buffer currently pointed to by the Data Pointer. The
- command uses the Storage Format parameter when storing the data
- so that if the data is in a non-standard format such as nibblized
- or in M1 format, this is accounted for and the complete byte is
- stored appropriately. This command is more commonly used in
- Template macros but could be used for other purposes.
-
- eg. FS X 10
-
- This command stores the value in W in the tenth byte offset from
- the Data Pointer.
-
- The complement of this command is FR X 10.
-
- WARNING:
-
- DANGER! Ensure the offset does not exceed the size of the data
-
-
- Disk Read
- ---------
-
- DR n ofs
-
- where
-
- n = the number of bytes to read from the current disk file
- ofs = where to load the data relative to the Data Pointer
-
- This command reads a block of n data bytes from an open disk file
- and stores it in memory with a Data Pointer offset of 'ofs'. This
- command is necessary for converting files from other
- manufacturers.
-
- eg. DR 155 6
-
- Read 155 bytes and store it starting 6 bytes from the Data
- Pointer.
-
- WARNING:
-
- 1) This command should ONLY be used in a File Conversion macro
- created in the File Conversion Window!
-
- 2) DANGER! Ensure the data read is not larger than the available
- buffer size!
-
-
- Disk Seek
- ---------
-
- DS n
-
- where
-
- n = the number of bytes to advance
-
- This command moves the position of the disk file pointer forward
- n bytes so that data can be read from the middle or end of a
- file. Not all companies use the same file format so it is
- necessary to be able to move anywhere in the file to collect the
- data necessary to create a Sound Quest file of the same type.
-
- eg. DS 166
-
- Advance the disk file pointer 166 bytes.
-
- WARNING:
-
- 1) This command should ONLY be used in a File Conversion macro
- created in the File Conversion Window!
-
-
- Conditional Execution
- ---------------------
-
- IF (W..Z) - execute code if variable is NOT equal 0
- IFN (W..Z) - execute code if variable is equal 0
- IFL (W..Z) - execute code if variable is less than 0
- IFG (W..Z) - execute code if variable is greater than 0
- IFE - end any conditional execution
-
- where
-
- (W..Z) is one of four variables: W, X, Y, Z
-
- These commands allow execution of macro code only if certain
- requirements are met. This commands are far more commonly used
- when writing Template macros. They allow the limitation of
- certain actions based on the state of variables. If a test fails,
- all macro code is ignored until the first IFE command is executed
- and operation returns to normal.
-
- NOTE: If IFE is used at the very end of a macro, an error is
- generated. Enter E or ] to end the macro correctly.
-
-
- PC MPU mode commands
- --------------------
-
- ND - enter MPU dumb mode
- NI - enter MPU intelligent mode
-
-
- There are a number of limited circumstances where it is
- absolutely necessary to enter the MPU dumb mode in order to
- receive or transmit the required data. Two of these are
- transmitting and receiving Casio SysX information and Receiving
- large Ensoniq sequence dumps.
-
- If your macro causes the MPU to enter dumb mode, ensure that it
- is reset to intelligent mode before exiting the macro.
-
- NOTE: The macro compilers on other computer systems are capable
- of ignoring these commands.
-
- WARNING:
-
- PC MPU users MUST NOT be running the sequencer when executing
- these macros.
-
- Examples
-
- Here are a number of macro examples drawn directly from existing
- Sound Quest Drivers, with explanations:
-
- M1 Combination Bank Receive Macro
-
- S 7 {F0 42 30 19 1D 1 F7} - set the dump request
- TR 7 - transmit bytes on next receive
- R 14179 - receive M1 Combination bank
-
-
- M1 Combination Bank Audition Macro
- ----------------------------------
-
- S 8 {F0 42 30 19 4E 1 10 F7} - set M1 in Combination edit
- T 8 - transmit the message
- D10000 - delay 10 ms. to allow response
- GA 148 - allocate memory for audition
- GN - set new memory for work
- FA 5 0 {F0 42 30 19 49} - setup Single Combination header
- GC 0 5 124 - copy the combination data
- MX = 247 - set X = 247 (F7H) end of SysX
- FX 147 - put F7H into last byte
- T 148 - transmit the 148 bytes
- GF 148 - free the allocated memory
-
-
- FB01 Patch Bank Transmit Macro
- ------------------------------
-
- NOTE: Each Patch has its own Check sum which must be
- recalculated.
-
- MW = 76 - set offset to start of the first
- checksum to be calculated.
- MX = 204 - set offset to store first the
- checksum.
- L 48 [ - loop for each of 48 patches
- K 0 0 W 128 X - calculate Patch's checksum
- MW + 131 - advance W to next patch
- MX + 131 - advance X to next patch
- ] - end of loop
- T 6363 - transmit the bank
-
-
- THE FILE CONVERSION WINDOW
- ==========================
-
- WARNING! TO USE THIS WINDOW YOU SHOULD:
-
- 1. Have a knowledge and understanding of hexadecimal.
- 2. Be able to spot relevant SysX data in a file.
- 3. Be able to create complete SysX messages.
- 4. Be able to read and understand the System Exclusive
- implementation charts of your instrument.
-
- The File Conversion Window is used to convert files from other
- manufacturer's formats into Sound Quest's file format so that
- they can be used by MIDI QUEST. Before starting this process, you
- should contact Sound Quest either through our support line or our
- BBS to find out whether there is already a macro available to
- convert your files.
-
- The steps to converting a file are as follows:
-
- 1. Open the File Conversion Window.
- 2. Determine the file format of the old file to convert.
- 3. Load the Sound Quest Driver for the data into the window.
- 4. Write a macro that reads & converts the old file.
- 5. Select "Convert File to SQ" OR "Convert Directory to SQ".
- 6. Load the new data file to ensure proper conversion.
- 7. "Save" the new conversion macro to disk for later use.
-
- NOTE: With an existing conversion macro replace 3,4,5 with 8.
-
- 8. "Open" an existing file conversion macro.
-
-
- Step 1 - Opening the File Conversion Window.
- --------------------------------------------
-
- MAC, AMIGA, ATARI ST, WINDOWS
-
- Use the following steps to access the File Conversion Window:
-
- 1. Bring down the "Utilities" menu.
- 2. Select "File Conversion Window" (item 8).
-
- PC/XT/AT/PS 2
-
- In order to save memory, it has been necessary to put the File
- Conversion Window into a separate program called DRVCREAT.EXE. On
- a hard drive system, this program will be installed in the MIDI
- QUEST directory. On a floppy only system, the program will be
- found on Disk #2.
-
- Use the following steps to access the File Conversion Window:
-
- 1. Save whatever data you have loaded into MIDI QUEST.
- 2. Quit the program.
- 3. Insert Disk #2 on a floppy system.
- 4. Execute METASHEL /i<RETURN>
- 5. Execute DRVCREAT <RETURN>.
- 6. Close the Driver Creator Window (select Close icon).
- 7. Pull down the "Windows" menu.
- 8. Select "Conversion Window" (item 2).
-
- If this is the first time running the program you will beprompted to enter the identical information as was requested when
- MIDI QUEST was first started (graphics adaptor and MPU interrupt
- number). See the "Getting Started" section of the manual if a
- refresher is needed.
-
-
- Step 2 - Determining the File Format
- ------------------------------------
-
- The Sound Quest format file stores much more than just the System
- Exclusive information. It also stores comments, file search
- codes, and information on how the data is to be transmitted.
- Sound Quest's file format also stores complete MIDI System
- Exclusive messages unlike many other manufacturers which only
- store the data.
-
- Before attempting to analyse a manufacturer's file format,
- contact Sound Quest to determine whether a macro has already been
- written for the particular data.
-
- The format of another manufacturer's file can be determined in
- one of these ways:
-
- 1. The format is printed in the manufacturer's manual.
- 2. Use the "Load File to SysX View" menu item to load the
- file and search for the data within the file.
- 3. Use some other program or utility you own to view the
- file and analyse its contents.
-
- Assuming that you must determine the manufacturer's file format,
- here is one of the best ways to to it:
-
- 1. Load file into MIDI QUEST using "Load File to SysX View"
- 2. Search for names stored within the file.
- 3. Compare the position of the name(s) in the file to where
- they are stored in the data and work backwards to
- determine where the data starts.
- 4. This method assumes that the SysX data has not been
- "converted" in any way.
-
-
- Step 3 - Loading the Sound Quest Driver
- ---------------------------------------
-
- The Sound Quest Driver must be loaded into the File Conversion
- Window because this information is an integral component of every
- Sound Quest Data File. It also tells the File Conversion Window
- what kind of data is being converted. A driver can be obtained
- from two locations, directly from disk or from the Driver List
- Window (not available on PC).
-
- Loading the Driver from disk:
-
- 1. Select on the File Conversion Window to activate it.
- 2. Display the Convert menu.
- 3. Select the "Load Driver From Disk" item.
- 4. Use the displayed File Requester to select the driver.
- 5. Select OK to load the driver.
- 6. The driver name will appear below "Convert to:".
-
- Loading the Driver from the Driver List:
-
- 1. Display the Driver List Window (if necessary).
- 2. Select the Driver to load into File Conversion.
- 3. Select on the File Conversion Window to activate it.
- 4. Display the Convert menu.
- 5. Select the "Load Driver From List" option.
- 6. The selected driver will appear below "Convert to:".
-
- NOTE: This option is not available to PC users since the File
- Conversion Window is in a separate program.
-
-
- Step 4 - Write a Macro Conversion
- ---------------------------------
-
- Clicking the mouse BELOW the "Macro:" title will activate a
- cursor where the file conversion macro is entered. When the
- conversion process is started, MIDI QUEST automatically opens the
- selected data file for reading AND allocates the memory required
- for a file using this driver.
-
- Every conversion macro will vary according to the specific
- manufacturer and the type of data which is being converted but as
- a general rule the steps will occur in this order:
-
- 1. Advance the disk file to where the SysX data is (DS n).
- 2. Read the SysX data from old file -> new file (DR n x).
- 3. Add SysX header if necessary (FA 6 0 {F0 43 0 0 1 1B}).
- 4. Add SysX tail if necessary.
-
- NOTE: the bracketted commands show the relevent macro commands
- which accomplish the required function where n and x are some
- numeric value.
-
- It may, of course, be necessary to perform multiple disk seeks
- and reads as well as a wider range of formatting. Obviously it
- will be necessary to read the section describing the macro
- language extensively.
-
- WARNING: Make sure that the DR macro call reads data into the
- allocated memory and NOT beyond or nasty problems can result. The
- same warning holds true for the FA macro command.
-
-
- Step 5 - Convert the File
- -------------------------
-
- To convert the file, select either "Convert File to SQ" or
- "Convert Directory to SQ". MIDI QUEST takes the following steps:
-
- 1. Opens a File Requester.
- 2. Choose the file to convert and Select "Ok".
- 3. A data file is allocated for the Conversion Driver.
- 4. The selected disk file is opened and prepared.
- 5. The macro is executed.
- 6. The Sound Quest file is saved to disk with .SQ extension.
- 7. If directory processing Loop to #3 for all files.
-
- WARNING: If a directory of files is being converted, ALL of the
- files in that directory MUST be of the same type.
-
- WARNING: If there are two or more files with the same name but
- different extensions, all of the converted files will be lost
- except the last one converted. The files should be renamed before
- the conversion process is started.
-
-
- Step 6 - Load the New File to Verify
- ------------------------------------
-
- After the files have been converted, the new files should be
- loaded to ensure that the process proceeded properly. This is
- particularly important when you have just written your own
- conversion macro.
-
- Take the following steps:
-
- 1. Bring down the "Windows" menu.
- 2. Select the "Edit Window" item.
- 3. A File Requester will appear.
- 4. Select the newly created data file and press "Ok".
- 5. Verify that the data has been converted properly.
- 6. Transmit the data to your instrument.
- 7. Verify the data aurally.
-
- Congratulations, you have successfully converted file formats.
-
-
- Step 7 - Save the Conversion Macro
- ----------------------------------
-
- Once the conversion macro has been tested, you can save it to
- disk for later use. When the macro is saved to disk, the Driver
- file in use is also saved with the macro and is automatically
- loaded with the macro.
-
- Take the following steps to save the macro:
-
- 1. Activate the File Conversion Window (click mouse on it).
- 2. Display the "Files" menu.
- 3. Select the "Save As... " item.
- 4. Enter a name for the macro.
- 5. Select "OK" to save the macro.
-
-
- Step 8 - Load a Conversion Macro
- --------------------------------
-
- If you want to use a conversion macro you have written and saved
- or received from someone else, follow these steps to load it:
-
- 1. Select on the File Conversion Window to activate it.
- 2. Display the "Files" menu.
- 3. Select the "Open" item.
- 4. Use the File Requester to select the macro.
- 5. Press "OK" to load the macro.
- 6. MIDI QUEST will load the selected macro for use.
-
- NOTE: the conversion macro file does not actually save the Sound
- Quest Driver it is using, only a path to where that driver is
- located on disk. If you obtain a conversion macro from someone
- else, make sure that you either have the requisite driver
- yourself or you obtain the driver as well.
-
-
- THE CONVERT MENU
- ================
-
- When the File Conversion Window is active, the "Convert" menu is
- available as the third menu strip. It contains four items (three
- on the PC) used in creating conversion macros.
-
- The Menu Items are:
-
- 1. Compile (M)
- 2. Load File to SysX View (T)
- 3. Load Driver From Disk (L)
- 4. Load Driver From List (E)
-
- Menu Item 1 - Compile (M)
-
- 1. Enter a macro or a portion thereof.
- 2. Select "Compile" from the "Convert" menu.
- 3. Find and correct the error if an error message results.
-
- The "Compile" item runs a test compile on the conversion macro.
- This option should be run before trying to convert a file from
- one format to the Sound Quest format. If there is an error, a
- message window is displayed indicating the line that the error
- occurred on, along with the character position at which it
- occurred.
-
-
- Menu Item 2 - Load File to SysX View (T)
- ----------------------------------------
-
- 1. Select "Load File to SysX View" from the "Convert" menu.
- 2. A File Requester will be displayed.
- 3. Choose the file to be converted.
- 4. The entire file will be loaded into a SysX View Window.
-
- This option provides an effective way to load an ENTIRE foreign
- data file into MIDI QUEST for viewing in both hexadecimal and
- character formats. Keep in mind that this is NOT A TRUE DATA FILE
- and should NOT be saved from the SysX View Window.
-
- Once the data has been placed in the SysX View Window, the window
- can be used to find the location of relevant data and greatly
- assists in the creation of conversion macros.
-
- WARNING: Do NOT abuse the capability of loading foreign data
- files into MIDI QUEST unconverted. They should be used only for
- viewing. The program can not understand them in any other way. We
- are not reponsible for the results if they are.
-
-
- Menu Item 3 - Load Driver From Disk (L)
- ---------------------------------------
-
- 1. Select "Load Driver From Disk" from the "Convert" menu.
- 2. A File Requester will be displayed.
- 3. Choose the driver to be loaded.
- 4. The driver will be loaded into File Conversion Window.
-
- When a new macro is being written, the File Conversion needs a
- driver to know what kind of data file it will be creating. This
- option enables any driver to be loaded from disk.
-
-
- Menu Item 4 - Load Driver From List (E)
- ---------------------------------------
-
- 1. Display the Driver List Window if necessary.
- 2. Select the driver for the File Conversion Window.
- 3. Select "Load Driver From List" from the "Convert" menu.
- 4. The driver will be copied into File Conversion Window.
-
- When a new macro is being written, the File Conversion needs a
- driver to know what kind of data file it will be creating. This
- option enables any driver in the Driver List Window to be copied
- into the File Conversion Window.
-
- NOTE: This option is not available for PCs since a separate
- program is used for file conversions.
-
-
-
- MIDI COMMUNICATION ERRORS
- =========================
-
- These errors are all generated while attempting to either
- transmit or receive System Exclusive information. Before
- attempting to deal with the particular error, you should verify
- this information:
-
- 1. Communications channels for data and instrument match.
- 2. SysX communication is ENABLED for the instrument.
- (It is possible to shut off SysX on many instruments)
- 3. Check that the Patch Bay is properly mapped to the
- instrument.
- 4. All requirements & warnings in Fast Tips have been met.
- 5. Connect the instrument DIRECTLY to the computer.
- 6. ie. No merge boxes, mappers, etc. are connected.
- 7. Retry the communication.
-
- If after checking all of these possibilities an error is still
- being generated, it will be necessary to check out the particular
- error. The "Possible Causes" listed below will not include those
- already covered!
-
- In the listings below, the problem causes are listed in order of
- greatest to least likely. You should try to sort out the problem
- based on the order of this listing.
-
- NOTE: If you are working on a new driver, it is much more likely
- that there is an error in the driver. Concentrate on correcting
- the driver parameters. While the listings below include errors
- resulting from an incorrect driver, it considers them to be
- improbable and so usually they are listed at the bottom. CHECK
- THESE OUT FIRST!
-
-
-
- ERROR! MIDI Unit did not respond!
- ---------------------------------
-
- Possible Causes:
-
- 1. The driver dump request is incorrect.
- 2. The MIDI Channel Ofs (Communication Channel Ofs) is incorrect.
- 3. Instrument did not respond within timeout period.
-
- NOTE: Cause 3 (though very unlikely) should only occur in systems
- which require a polled MIDI reception scheme. The only polled
- reception currently used is with an ATARI ST running under CLab's
- Director.
-
- Solutions:
-
- 1. Verify and correct if necessary.
- 2. Verify and correct if necessary.
- 3. Load the macro into the Driver Creator Window and add a small
- delay in the Receive Macro between transmitting the dump request(T n) and receiving the data (R n).
-
-
- ERROR! End of SysX not received (TimeOut)!
- ------------------------------------------
-
- Possible Causes:
-
- 1. The wrong dump request is being used for the expected data.
- 2. Instrument did not complete transmission within the timeout
- period.
-
- NOTE: Cause 2 (though very unlikely) should only occur in systems
- which require a polled MIDI reception scheme. The only polled
- reception currently used is with an ATARI ST running under CLab's
- Director.
-
- Solutions:
-
- 1. Verify and correct if necessary.
- 2. Load the macro into the Driver Creator Window and make sure
- that the TR n macro command is used for transmitting any dump
- request messages.
-
-
- ERROR! SysX missing bytes!
- --------------------------
-
- Possible Causes:
-
- 1. A byte was lost by the MIDI receive circuitry.
- 2. Driver has an incorrect "FileSize" entry ('Sgl' mode).
- 3. Macro Receive call has incorrect # of bytes ('Ext' mode).
- 4. Driver is expecting a fixed length MIDI message when the
- message is infact a variable length.
-
- Solutions:
-
- 1. Retry the MIDI operation.
- 2. Verify and correct the "File Size" entry if necessary.
- 3. Verify and correct R n or RA x n macro calls if necessary.
- 4. Take generic dump into SysX View Window and verify file size
- or make "Fixed Length" 'No' if this is the case.
-
- NOTE: When "Fixed Length" is 'Yes', every SysX reception
- undergoes a number of tests to determine whether valid data was
- received.
-
-
- ERROR! Unexpected end of Macro!
- -------------------------------
-
- Possible Causes:
-
- 1. The Data Pointer has been set into the macro (use S cmd) and
- you are then writing beyond the size of the MIDI string.
-
- Solutions:
-
- 1. Load and check your macro very carefully if your computer has
- not already crashed.
-
-
- ERROR! Unexpected Macro Command
- -------------------------------
-
- Possible Causes:
-
- 1. The macro was written on a newer version of MIDI QUEST which
- has an enhanced macro language.
- 2. The Data Pointer has been set into the macro (use S cmd) and
- you are then writing beyond the size of the MIDI string.
-
- Solutions:
-
- 1. Contact Sound Quest, report the problem and we will attempt to
- determine whether this is the problem.
- 2. Load and check your macro very carefully if your computer has
- not already crashed.
-
-
- ERROR! No EOF transmission found!
- ---------------------------------
-
- Possible Causes:
-
- 1. A byte was lost by the MIDI receive circuitry.
- 2. Driver has an incorrect "FileSize" entry ('Sgl' mode).
- 3. Macro Receive call has incorrect # of bytes ('Ext' mode).
- 4. Driver is expecting a fixed length MIDI message when the
- message is in fact a variable length.
-
- Solutions:
-
- 1. Retry the MIDI operation.
- 2. Verify and correct the "File Size" entry if necessary.
- 3. Verify and current R n or RA x n macro calls if necessary.
- 4. Take generic dump into SysX View Window and verify file size
- or make "Fixed Length" 'No' if this is the case.
-
- NOTE: When "Fixed Length" is 'Yes' then every SysX reception
- undergoes a number of tests to determine whether valid data was
- received.
-
-
- ERROR! Incorrect Company ID!
- ----------------------------
-
- Possible Causes:
-
- 1. Error during MIDI communication.
- 2. An instrument responded which should not have.
- 3. The incorrect "Company ID" was entered in Driver.
-
- Solutions:
-
- 1. Retry the MIDI communication.
- 2. Ensure the correct instrument is connected to the computer.
- 3. Verify and correct the "Company ID" - IN HEX!
-
-
- ----------------------------------
- ERROR! Unexpected ACK recvd!
- ERROR! Roland Communication Error!
- ERROR! Unrecognized Roland Error!
- ----------------------------------
-
- Possible Causes:
-
- 1. Error during MIDI communication.
- 2. Error in the instrument's ROM software.
-
- Solutions:
-
- 1. Retry MIDI communication.
- 2. Check Fast Tips to see if there are any known problems.
- 2. Contact Roland to determine whether the latest software is
- being used. If you are not using the latest software, have
- your ROMS replaced.
-
- NOTE: This error can only be generated by ROLAND communication.
-
-
- ERROR! SysX Data Rejected!
- --------------------------
-
- Possible Causes:
-
- 1. Error in MIDI communication.
- 2. Instrument is in the wrong mode for the desired communication.
- 3. Error in the instrument's ROM software.
-
- Solutions:
-
- 1. Retry MIDI communication.
- 2. Check Fast Tips to see if there are any known problems.
- 2. If the driver uses handshaking - set communication properly.
- 2. If no handshaking - ensure instrument is not in that mode.
- 3. Contact Roland to determine whether the latest software is
- being used. If you are not using the latest software, have
- your ROMS replaced.
-
- NOTE: This error can only be generated by ROLAND communication.
-
-
- ERROR! Incorrect # of bytes received!
- -------------------------------------
-
- Possible Causes:
-
- 1. Error during MIDI communication.
- 2. Error in the instrument's ROM software.
-
- Solutions:
-
- 1. Retry MIDI communication.
- 2A. Check Fast Tips to see if there are any known problems.
- 2B. Contact Roland to determine whether the latest software is
- being used. If you are not, have your ROMS replaced.
-
- NOTE: This error can only be generated by ROLAND communication.
-
-
- ERROR! Dump Too large for allocated memory!
- -------------------------------------------
-
- Possible Causes:
-
- 1. A driver for a variable length SysX dump only made a partial
- memory allocation to save memory. The instrument sent more bytes
- than were allocated.
-
- Solutions:
-
- 1. There will usually be a driver with a larger "FileSize" (which
- controls memory allocation). If not, increase the driver's
- "FileSize" using the Driver Creator Window.
-
-
- ERROR! Memory Allocation Failed!
- --------------------------------
-
- Possible Causes:
-
- 1. When a driver does not have a fixed length (ie "Fixed Length"
- is 'No'), then after SysX data is received a new buffer is
- allocated which is the same size as the number of bytes received.
- If the allocation of the new buffer fails, this error is
- generated.
-
- Solutions:
-
- 1. Make more memory available to the computer for this buffer by
- closing as many windows as is necessary to correctly receive the
- data.
-
-
-
- DISK ACCESS ERRORS
- ------------------
- ------------------
-
- These errors are all generated while attempting to save or read
- data from disk.
-
- As with the MIDI communication errors, the possible causes are
- presented in the order in which they are most likely to occur.
-
-
- File NOT Found!
- ---------------
-
- Possible Causes:
-
- 1. The path contains an invalid path.
- 2. The file name was entered incorrectly.
- 3. The file is not stored in the selected directory.
-
- Solutions:
-
- 1A. Check that the path is valid.
- 1B. Click the mouse in the path string to activate it. Hit the
- <RETURN> key to display all of the files in the directory. If no
- files are displayed, the path is probably invalid and should
- be re-entered.
- 2. Use the Up and Down Arrows or the slider to display the
- desired file. Double click on it to load.
- 3. Using #2 will determine whether the file is stored in the
- directory.
-
-
- File READ Error!
- ----------------
-
- Possible Causes:
-
- 1. The file has somehow been corrupted.
- 2. Hardware access error.
-
- Solutions :
-
- 1. If you have a program that checks the integrity of a disk, run
- it on the disk which contains the problem file.
- 2. Save your current work. Shut the computer off and restart it.
- Try loading the file again.
-
- NOTE: ALWAYS KEEP BACKUPS OF ALL FILES ON A SEPARATE DISK!
-
-
- Not an IFF File!
- ----------------
-
- Possible Causes:
-
- 1. The selected file does not use the storage format MIDI QUEST
- uses and was not created by MIDI QUEST.
- 2. The file has been corrupted.
-
- Solutions:
-
- 1A. The wrong file was probably selected by mistake so select a
- different file.
- 1B. The file was created by a different software package and
- requires file conversion.
- 2. Load the data from a backup disk.
-
-
- Not an IFF Data File!
- ---------------------
-
- Possible Causes:
-
- 1. The selected file contains some kind of information other than
- data.
-
- Solutions:
-
- 1. Select a data file.
-
-
- Not an IFF Driver File!
- -----------------------
-
- Possible Causes:
-
- 1. The selected file contains some kind of information other than
- a Sound Quest MIDI driver.
-
- Solutions:
-
- 1. Select a Sound Quest MIDI driver file.
-
-
- File NOT a Data Base!
- ---------------------
-
- Possible Causes:
-
- 1. The selected file contains some kind of information other than
- a data base.
-
- Solutions:
-
- 1. Select a data base file.
-
-
- Directory NOT Found!
- --------------------
-
- Possible Causes:
-
- 1. The name path of a directory on the disk was entered manually
- and incorrectly.
-
- Solutions:
-
- 1A. Correct the mistake (typo) in the path retry.
- 1B. Enter only the disk name and use the mouse to select
- directories to make the path.
-
-
- Insufficient Memory!
- --------------------
-
- Possible Causes:
-
- 1. The computer did not have sufficient memory to load the entire
- file.
-
- Solutions:
- 1A. Close some already open windows to free sufficient memory to
- load the file.
- 1B. If this is a consistent problem and you are loading banks,
- consider turning 'Keep Backup' Off in the Options menu.
-
-
- File WRITE Error!
- -----------------
-
- Possible Causes:
-
- 1. There is insufficient disk space to save the file.
- 2. There is a hard error on the disk.
- 3. There is a hardware problem.
-
- Solutions:
-
- 1. Try saving to a different disk.
- 2. Try saving to a different disk.
- 3. Try saving to a different disk in a different drive.
-
-
- File CREATION Error!
- --------------------
-
- Possible Causes:
-
- 1. An unacceptable file name was used (ie unacceptablecharacters).
- 2. The file is being saved to a directory which does not exist.
- 3. The file being written to has been given READ ONLY status.
-
- Solutions:
-
- 1. Give the file a valid operating system name.
- 2. Verify that the destination directory is valid.
- 3. If a file of the same name already exists, verify its
- READ/WRITE status.
-
-
- MACRO ERRORS
- ------------
- ------------
-
- These errors are all generated while attempting to compile a
- macro for a driver, a template or a file conversion. The error
- message is provided along with the line that the error was found
- in and the character position.
-
- As with the MIDI communication errors, the errors are presented
- in the order in which they are most likely to occur.
-
-
- Destination Buffer Exceeded!
- ----------------------------
-
- Possible Causes:
-
- 1. Some macro command was entered improperly and the compiler has
- missed it. (This is the much more likely of the two.)
- 2. The macro is so incredibly long that it has used up the
- available buffer space (currently 1000 bytes for each macro).
-
- Solutions:
-
- 1. There is an error somewhere in the macro, unfortunately you
- will have to look a little to find it. To test this methodically,
- use a letter which is definitely NOT a command such as 'H'.
- Insert the H in the code. Compile the macro. A "Bad Macro
- Command" error will occur. Continue moving the 'H' through the
- macro until the "Destination Buffer Exceeded" error is generated
- instead of the error for a bad macro command.
- 2. Find ways to optimize the macro by using the loop and
- conditional execution commands.
-
-
- Unknown Character
- -----------------
-
- Possible Causes:
-
- 1. An invalid macro command was entered at the given location.
- 2. An extension to the IF command was invalid
- (ie NOT IFN, IFE, IFG, or IFL)
- 3. The compiler could not process the character in the position
- it was found.
-
- Solutions:
-
- 1. Check the position and enter the correct macro command.
- 2. Enter the correct conditional execution command.
- 3. Check the code in the area where the error was generated very
- closely.
-
-
- Invalid Value
- -------------
-
- Possible Causes:
-
- 1. A hex value was entered which exceeded 255
- 2. A 'Set' command was used which described a MIDI string with
- more bytes than were actually entered.
-
- Solutions:
-
- 1. Check to see that the entry at the error point is less than
- FFH or 255D.
- 2. If a MIDI string of 8 is set (ie. S 8 { }) ensure that there
- are actually eight MIDI bytes entered in the string.
-
-
- Invalid Math Operation
- ----------------------
-
- Possible Causes:
-
- 1. An invalid math operation was entered.
-
- Solutions:
-
- 1. Check the error position and enter a valid math function.
-
-
- Invalid Assignment Opcode
- -------------------------
-
- Possible Causes:
-
- 1. The second character of an opcode is invalid at the error
- position.
-
- Solutions:
-
- 1. Check the error position and enter the valid op code.
- (eg GA and GF are valid but GH is not)
-
-
- End of Macro Buffer
- -------------------
-
- Possible Causes:
-
- 1. An IFE command can not be the last command in a macro.
- 2. The compiler has reached the end of the Macro Buffer
- unexpectedly.
-
- Solutions:
-
- 1. Enter an end of macro command after IFE (either ']' or 'E').
- 2. This is a very insidious problem in the macro. Use the method
- described in the "Destination Buffer Exceeded" error to find it.
-
-
-
-
-
-